﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CapaNegocio;

namespace PresentacionWin32
{
    public partial class Frm_Factura : Form
    {
        public Frm_Factura()
        {
            InitializeComponent();
        }
        Clase_Producto _Producto = new Clase_Producto();
        Clase_Cliente _cliente = new Clase_Cliente();
       
        Clase_FacturaGeneral _factura = new Clase_FacturaGeneral();
        Clase_Cajera _cajero = new Clase_Cajera();
       
        Clase_FacturaGeneral _numero = new Clase_FacturaGeneral();
         Clasetonta objetoidfactura = new Clasetonta ();

         Clase_Calculo objeto_calculo = new Clase_Calculo();
     

        private void btn_borrar_Click(object sender, EventArgs e)
        {
            Limpiar_factura();
        }

        private void Limpiar_factura()
        {
            this.txt_idcliente.Clear();
            this.txt_nombre_cliente.Clear();
            this.txt_cedularuc.Clear();
            this.txt_telefono.Clear();
            this.txt_direccion.Clear();
            this.txt_subtotal.Clear();
            this.txt_iva.Clear();
            this.txt_total_a_pagar.Clear();
            this.txt_idcliente.Clear();
            this.txt_numero.Clear();
            comboBox1.Text = "Seleccionar cajero/a";
            txt_id_cajero.Clear();
            this.dataGridView1.Rows.Clear();
            _Producto = new Clase_Producto();
            _cliente = new Clase_Cliente();
            _factura = new Clase_FacturaGeneral();
            _cajero = new Clase_Cajera(); 
            _numero = new Clase_FacturaGeneral();

        }
        private void LimpiarProductos()
        {
            this.textBox1.Clear();
            this.textBox2.Clear();
            this.textBox3.Clear();
            this.textBox4.Clear();
            this.textBox5.Clear();
            this.textBox6.Clear();
            this.txtidcabezerafactura.Clear();
            _Producto = new Clase_Producto();
            _cliente = new Clase_Cliente();
            _factura = new Clase_FacturaGeneral();
            _cajero = new Clase_Cajera();
            _numero = new Clase_FacturaGeneral();
        }

        private void btn_cargardatos_Click(object sender, EventArgs e)
        {
            //txt_iva.Text = (Convert.ToString(objeto_calculo.Metodo_ObtenerIva(Convert.ToDouble(textBox6.Text))));
                dataGridView1.Rows.Add(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text, textBox6.Text);
                calculo_general();
                LimpiarProductos();

                this.btn_cargardatos.Enabled = false;

          //MessageBox.Show(_factura.insertarDetalle_factura(new Clase_FacturaGeneral{ Id_Cabezera_Factura = Convert.ToInt32( txtidcabezerafactura.Text)}));
        }
        private void btn_buscar_Click(object sender, EventArgs e)
        {

            if (textBox3.Text == "")
            {
                MessageBox.Show("Debe ingresar el producto a buscar");
            }
            else
            {
                cargar_producto();
                if (textBox2.Text == "")
                {

                    MessageBox.Show("Debe ingresar la cantidad");
                    LimpiarProductos();
                }
                else
                {
                    Clase_Calculo objeto_calculo = new Clase_Calculo();
                    textBox6.Text = (Convert.ToString(objeto_calculo.Metodo_Calculo(Convert.ToDecimal(textBox2.Text), Convert.ToDecimal(textBox5.Text))));
                    btn_cargardatos.Enabled = true;

                }
            }

        }
       
        private void cargar_producto()
        {
            _Producto = _Producto.Metodo_ObtenerProducto().Where(c => c.Nombre_Producto == textBox3.Text).FirstOrDefault();
            if (_Producto != null)
            {
                this.textBox3.Text = _Producto.Nombre_Producto;
                this.textBox1.Text = Convert.ToString(_Producto.Id_Producto);
                this.textBox4.Text = Convert.ToString(_Producto.Porcentaje);
                this.textBox5.Text = Convert.ToString(_Producto.Precio_Producto);
            }
            else
            {
                MessageBox.Show("No se han encontrado los datos solicitdos...");
                LimpiarProductos();
            }
        }

        
        private void calculo_unitario()
        {
                int cantidad = Convert.ToInt32(textBox2.Text);
                decimal iva = Convert.ToDecimal(textBox4.Text);
                decimal precio_unit = Convert.ToDecimal(textBox5.Text);
                decimal subtotal;

                subtotal = (cantidad * precio_unit);
                textBox6.Text = Convert.ToString(subtotal);
                this.btn_cargardatos.Enabled = true;
        }


        private void btn_consultacliente_Click(object sender, EventArgs e)
        {
            cargar_cliente();
        }


        private void cargar_cliente()
        {
            _cliente = _cliente.Metodo_ObtenerCliente().Where(h => h.Ruc_Cedula_Cliente == txt_cedularuc.Text).FirstOrDefault();

            if (_cliente != null)
            {
                this.txt_nombre_cliente.Text = _cliente.Nombre_Cliente;
                this.txt_cedularuc.Text = _cliente.Ruc_Cedula_Cliente;
                this.txt_telefono.Text = _cliente.Telefono_Cliente;
                this.txt_direccion.Text = _cliente.Direccion_Cliente;
                txt_idcliente.Text = _cliente.Id_Cliente.ToString();
            }
            else
            { 
                Nuevo_Cliente frm = new Nuevo_Cliente();
                frm.Show();
                Limpiar_factura();
            }
        }


        private void calculo_general()
        {
            decimal suma_total = 0;
            decimal suma_iva = 0;
            decimal total_a_pagar = 0;

            foreach(DataGridViewRow row in dataGridView1.Rows)
            {
                suma_total += Convert.ToDecimal(row.Cells["Total"].Value);
                suma_iva += Convert.ToDecimal(row.Cells["IVA"].Value) * Convert.ToDecimal(row.Cells["Total"].Value);
            }

            total_a_pagar = (suma_iva + suma_total);

            txt_subtotal.Text = Convert.ToString(suma_total);
            txt_iva.Text = Convert.ToString(suma_iva);
            txt_total_a_pagar.Text = Convert.ToString(total_a_pagar);
            }

        private void Frm_Factura_Load(object sender, EventArgs e)
        {
            dataGridView1.Columns["Id_Producto"].Visible = false;
            dataGridView1.Columns[1].Width = 40;
            dataGridView1.Columns[2].Width = 370;
            dataGridView1.Columns[3].Width = 40;
            dataGridView1.Columns[4].Width = 40;
            dataGridView1.Columns[5].Width = 40;


            Clase_Cajera objeto = new Clase_Cajera();
            comboBox1.DataSource = objeto.Metodo_ObtenerCajera();
            comboBox1.DisplayMember = "nombre_cajera";
            comboBox1.ValueMember = "Id_Cajera";
            comboBox1.Text = "Seleccionar cajero/a";
        }

        private void generarnumero()
        {
            _numero = _numero.met_obtenerCabeceraFactura().Where(a => a.Serie == txt_serie.Text).FirstOrDefault();
            if (_numero != null)
            {
                this.txt_numero.Text = _numero.Numero.ToString();
            }
            else
            {
                MessageBox.Show("No se encuentra el dato solicitado...");
            }
           
        }

        

        private void btn_guardar_Click(object sender, EventArgs e)
        {
            
                MessageBox.Show(_factura.met_IngresoCabeceraFactura(new Clase_FacturaGeneral { Id_Cliente = Convert.ToInt32(txt_idcliente.Text), Id_Cajera = Convert.ToInt32(txt_id_cajero.Text), Fecha = Convert.ToDateTime(txt_fecha.Text), Sucursal = txt_sucursal.Text, Serie = txt_serie.Text, Numero = Convert.ToInt32(txt_numero.Text)}));
            
        }

        private void btn_quitar_Click(object sender, EventArgs e)
        {
            dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index);
        }

        private void btn_buscarcajero_Click(object sender, EventArgs e)
        {
            _cajero = _cajero.Metodo_ObtenerCajera().Where(h => h.nombre_cajera == comboBox1.Text).FirstOrDefault();
            if (_cajero != null)
            {
                this.txt_id_cajero.Text = _cajero.id_cajera.ToString();
            }
            else
            {
                Limpiar_factura();
            }
        }


     private  void obteneridfac()
        {
            objetoidfactura = objetoidfactura.obtenercabezerefactura().Where(z => z.Sucursal == txt_serie.Text).FirstOrDefault();
            this.txtidcabezerafactura.Text = Convert.ToString(objetoidfactura.Id_Cabezera_Factura);
        }

        
        }
    }
